1.5 Numpy数据类型转换
利用array创建数组时,可设置数据类型,也可以用astype()函数对已存在数组转换数据类型
1.5.1常见数据设置表
数据名称 | 简写 | 注释 |
---|---|---|
bool | ?,b1 | 布尔型(True ,False,如是数据则0为False) |
int8 | b,i1 | 字节(-128~127) |
int16 | b,i2 | 整数(-32768~32768) |
int32 | b,i4 | 长整(-10位数~10位数)可表示为int |
int64 | b,i8 | 长整(-19位数~19位数) |
uint8 | B,u1 | 无符号整数(0~255) |
uint16 | H,u2 | 无符号整数(0~65535) |
uint32 | I,u2 | 无符号整数(0~10位数) |
uint64 | Q,u8 | 无符号整数(0~19位数) |
float16 | f2,e | 单精度浮点数,包括1个符号位,5个指数位,10个尾数位 |
float32 | f,f4 | 单精度浮点数,包括1个符号位,8个指数位,23个尾数位 |
float64 | d,f8 | 单精度浮点数,包括1个符号位,11个指数位,52个尾数位,可表示为float |
str | a,S | 字符串,只包含ASCII码字符,S或a后表示字符长度,超出字符长度部份则会被截断 |
unicode | U | Unicode字符串,U后表示字符长度,超出字符长度部份则会被截断 |
datetime64 | M8 | 年(“Y”),月(“M”),周(“Y”),天(“D”),小时(“H”),分(“m”),秒(“s”),毫秒(“ms”),微秒(“us”) |
timedelta64 | 表示时间差,年(“Y”),月(“M”),周(“Y”),天(“D”),小时(“H”),分(“m”),秒(“s”),毫秒(“ms”),微秒(“us”) |
1.5.2 字符串默认格式
只要一个为字符串,则其余元素均默认为字符串
import numpy as np
arr=np.array([ 1,"12",99,3544 ])
print (arr)
返回:
['1' '12' '99' '3544']
1.5.3 数据设置返回类型为整数
设置为整数
import numpy as np
arr=np.array([ 1,"12",99,3544 ], dtype = "i" )
print (arr)
返回:
[ 1 12 99 3544]
1.5.4 字符串数据截取位数
import numpy as np
arr=np.array([ 1,"12",99,3544 ], dtype = "U2" )
print (arr)
返回:
['1' '12' '99' '35']
1.5.5 数据设置成年格式
import numpy as np
arr=np.array([ 1,"12",2018,3544 ])
arr1=arr.astype( "datetime64[Y]" )
print (arr1)
返回:
['0001' '0012' '2018' '3544']
1.5.6 数据设置成日期格式
import numpy as np
arr=np.array([ 1,"12",2018,3544 ])
arr1=arr.astype( "datetime64[D]" )
print (arr1)
返回:
['0001-01-01' '0012-01-01' '2018-01-01' '3544-01-01']
1.5.7 数字格式指定起始日期转成日期格式
数据转换的日期是1970-1-1开始的,pd.to datetime(),可以让用户自定义起始日期,
import numpy as np
arr=pd.to_datetime([ 0,12,1225,34 ], unit = "D" , origin= '2000-1-1' )
print (arr)
返回:
DatetimeIndex(['2000-01-01', '2000-01-13', '2003-05-10', '2000-02-04'], dtype='datetime64[ns]', freq=None)
1.5.8 数字格式转成日期格式(返回操作列数据形式)
以下实例为源数据是数据格式变成日期格式,如源数据为日期,则不用再指定起止日
import pandas as pd
path=r 'D:\pythonCharm\PyObject\Object\测试\简单测试.xlsx'
df=pd.read_excel (path)
t=pd.to_datetime(df[ "入职日期" ], unit= "D" , origin= '1899-12-30' ) #日期为1900-1-1往前推两位才能对齐
print (t)
返回:
0 | 2023-11-01 |
1 | 2020-01-01 |
2 | 2021-07-07 |
Name: 入职日期, dtype: datetime64[ns]
以上返回的的结果不是数组,如要变成数组,则需要另外写入。
1.5.9数字格式转成日期格式(返回为整个数据形式)
以下实例为将源数据的数字日期转换成日期格式
import pandas as pd
path=r "D:\Pyobject2023\object\测试\素材\1.1.4 Numpy数组转换.xlsx"
df=pd.read_excel (path)
df[ "入职日期" ]=pd.to_datetime(df[ "入职日期" ], unit= "D" , origin= '1899-12-30' )
print (df)
返回:
姓名 | 入职日期 | 基础工资 | |
---|---|---|---|
0 | 张三 | 2023-11-01 | 1000 |
1 | 李四 | 2020-01-01 | 2050 |
2 | 王五 | 2021-07-07 | 3041 |